package educar.models;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import educar.db.JPA;

public class Alumno extends Persona{
	
	private static JPA jpa = new JPA();
	private int nroAlumno;
	
	/**
	 * 
	 * @param DNI "dni de alumno"
	 * @param numeroAlumno "numero de alumno"
	 * @param nombre "nombre de alumno"
	 * @param apellido "apellido de alumno"
	 * @param direccion "direccion de alumno"
	 */
	
	public Alumno(int DNI,int numeroAlumno, String nombre, String apellido,String direccion) {
	  this.setDni(DNI);
	  this.setNombre(nombre);
	  this.setApellido(apellido);
	  this.setDireccion(direccion);
	  this.nroAlumno=numeroAlumno;
	}
	
	/**
	 * @return nroAlumno "numero del alumno "
	 */
	public int getNumeroAlumno() {
	  return nroAlumno;
	}
	
	/**
	 * 
	 * @param nuevaDireccion "direccion de alumno"
	 */
	public void modificar(String nuevaDireccion){
      jpa.update("alumno","direccion",nuevaDireccion,"dni",Integer.toString(this.getDni()));
	}

	/** 
	 * @param dni "dni del alumno"
	 * @return usuario de tipo alumno
	 * @throws userNotFound
	 */
	public static Alumno getAlumnoByDNI(String dni) throws userNotFound {
	  ResultSet rs = null;
	  Alumno u = null;
	  rs = jpa.getByField("alumno","dni",dni);
	  try {
		   if (rs.next()) {
		     u = new Alumno(rs.getInt(1),rs.getInt(2),rs.getString(3), rs.getString(4), rs.getString(5));
		   } 
		   else {
		     throw new userNotFound();
		   }
	      }
	  catch (SQLException e) {
	    e.printStackTrace();
	  }
	  return u;
	}
	
	/**
	 * Guarda y confirma la carga
	 * @return true "si el alumno es cargado correctamente"
	 * @return false "si el alumno no se ha cargado correctamente"
	 */
	public boolean save() {
	  try {
	    String dni = Integer.toString(this.getDni());
	    Alumno.getAlumnoByDNI(dni); //*****
		return false;
		} 
	  catch (userNotFound e1) {
	    String[] columns = { "dni","nro_alumno","nombre","apellido","direccion"};
		PreparedStatement stm = jpa.newRecord("educar_dev.alumno", columns);
		try {
		  stm.setInt(1,this.getDni());
		  stm.setInt(2,this.getDni());
		  stm.setString(3,this.getNombre());
		  stm.setString(4,this.getApellido());
		  stm.setString(5,this.getDireccion());
		} 
		catch (SQLException e) {
		  e.printStackTrace();
		  return false;
		}
        jpa.create(stm);
		return true;
		}
	}
	
	/**
	 * Elimina un alumno
	 * @param table "nombre de la tabla"
	 * @param columna "nombre de la columna"
	 * @param id "dni del alumno"
	 */
	public static void destroy(String table,String column,String id) {
	  jpa.destroy(table,column,id); 
	}

}
